package com.huluobo.a2107jetpackkotlindemo.hilt

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import com.huluobo.a2107jetpackkotlindemo.R
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject

/**
 * Hilt总结:
 * @Inject 通过注解来把构造方法依赖注入,在外部使用时可以不需要new,直接使用
 * @AndroidEntryPoint 在使用的类上需要加上该注解
 * @HiltAndroidApp 如果整体项目使用hilt需要在app上也加入一个注解
 */
@AndroidEntryPoint
class HiltActivity : AppCompatActivity() {

    //    @Inject
//    lateinit var mobilePhone: MobilePhone
//
//    @Inject
//    lateinit var userManager: UserManager
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_hilt)

        //这是没有使用依赖注入的情况,通过实例化2个对象来调用内部类的方法
//        val mobilePhone = MobilePhone()
//        mobilePhone.dialNumber()

        //使用依赖注入的情况
//        val mobilePhone = MobilePhone()
//        val simCard = SimCard()
//        mobilePhone.dialNumber(simCard)

//        mobilePhone.dialNumber()
//        userManager.getUserToken()

    }
}

//class SimCard @Inject constructor() {
//    private val TAG = "SimCard"
//    fun dialNumber() {
//        Log.i("TagA", "拨打电话")
//    }
//}
//
//class MobilePhone @Inject constructor(private val simCard: SimCard) {
//    //没有使用依赖注入的情况
////    fun dialNumber() {
////        val simCard = SimCard()
////        simCard.dialNumber()
////    }
//
//    fun dialNumber() {
//        simCard.dialNumber()
//    }
//}